Amplify で CodeCommit を利用する際 PowerUserAccess ではエラーになってしまうので解決策を教えてください
困っていた内容
PowerUserAccess を付与した IAM ユーザーが Ampify コンソールでアプリケーションを作成する際に、Git リポジトリとして CodeCommit を選択しましたがエラーが発生してしまいました。
User: arn:aws:sts::012345678901:assumed-role/user-name is not authorized to perform: iam:CreateRole on resource: arn:aws:iam::012345678901:role/service-role/AmplifyCodeCommitRole-45ff8cb8-0db9-4bc8-9247-46e527d17fbc because no identity-based policy allows the iam:CreateRole action
上記エラーの解決策を教えてください。
どう対応すればいいの?
PowerUserAccess に加えて、以下の権限を付与してください。
- CreatePolicy
- CreateRole
- AttachRolePolicy
- PassRole
Amplify コンソールでアプリケーションを作成する際、以下のような IAM ポリシーと IAM ロールが作成され、Amplify のサービスロールになります。
- AmplifyCodeCommitPolicy-adb0db8d-df57-49bf-b038-817081c1742b
- AmplifyCodeCommitRole-adb0db8d-df57-49bf-b038-817081c1742b
上記の IAM ポリシーと IAM ロールを作成し、Amplify のサービスロールとするためには上述の 4 つの IAM に関する権限が必要になります。
しかしながら、PowerUserAccess には IAM に関する権限が付与されていないため、PowerUserAccess のみではエラーが発生します。
やってみた
実際に PowerUserAccess だけのパターンと、PowerUserAccess + 4 つの権限のパターンを試してみました。
なお、CodeCommit にはあらかじめアプリを push してあります。
PowerUserAccess だけのパターン
Amplify コンソールでアプリケーションを作成したところ、以下のエラーが発生しました。
PowerUserAccess + 4 つの権限のパターン
PowerUserAccess に加えて、以下の権限を付与します。
- CreatePolicy
- CreateRole
- AttachRolePolicy
- PassRole
今回は以下のような IAM ポリシーを作成して対象の IAM ユーザーにアタッチしました。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"iam:CreatePolicy",
"iam:PassRole",
"iam:CreateRole",
"iam:AttachRolePolicy"
],
"Resource": [
"arn:aws:iam::{Accout-ID}:role/*",
"arn:aws:iam::{Accout-ID}:policy/*"
]
}
]
}
再度 Amplify アプリケーションをコンソールからデプロイすることで、アプリケーションの作成に成功しました。
IAM ポリシーと IAM ロールも作成されており、アプリケーションにも紐づいています。